package br.com.consigsys.model.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


/**
 * The persistent class for the tcons_reparticao database table.
 * 
 */
@Entity
@Table(name="tcons_reparticao")
public class TconsReparticao extends BaseEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="ID_REPARTICAO", unique=true, nullable=false)
	private Integer idReparticao;
	
	@Column(name="COD_REPARTICAO", length=10)
	private String codReparticao;

    @Temporal( TemporalType.TIMESTAMP)
	@Column(name="DATA_ULT_ALTERACAO")
	private Date dataUltAlteracao;

	@Column(name="DESC_REPARTICAO", nullable=false, length=40)
	private String descReparticao;

	@Column(length=100)
	private String email;

	@Column(name="END_BAIRRO", length=20)
	private String endBairro;

	@Column(name="END_CEP", length=8)
	private String endCep;

	@Column(name="END_CIDADE", length=20)
	private String endCidade;

	@Column(name="END_COMPL", length=20)
	private String endCompl;

	@Column(name="END_LOGRA", length=50)
	private String endLogra;

	@Column(name="END_NUMERO", length=10)
	private String endNumero;

	@Column(name="END_UF", length=2)
	private String endUf;

	@Column(name="NOME_CONTATO", length=20)
	private String nomeContato;

	@Column(name="NUM_DDD", length=3)
	private String numDdd;

	@Column(name="NUM_FAX", length=10)
	private String numFax;

	@Column(name="NUM_TELEFONE", length=10)
	private String numTelefone;

	@Column(name="TIPO_DISKETE", length=1)
	private String tipoDiskete;

	@Column(name="UNIDADE_PAGADORA", length=5)
	private String unidadePagadora;

	@Column(name="USUARIO_ULT_ALTERACAO", length=150)
	private String usuarioUltAlteracao;

	private Integer versao;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_CONSIGNATARIA")
	private TconsConsignataria consignataria;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_ORGAO")
	private TconsOrgao orgao;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_UF")
	private TconsUf uf;
	
    public TconsReparticao() {
    	this.uf = new TconsUf();
    	this.orgao = new TconsOrgao();
    	
    }
    
    @PrePersist
    protected void beforePersist(){
    	this.versao = 1;
    	this.dataUltAlteracao = new Date();
    	
    }

    @PreUpdate
    protected void beforeUpdate(){
    	this.dataUltAlteracao = new Date();
    	
    }

	public Integer getIdReparticao() {
		return this.idReparticao;
	}

	public void setIdReparticao(Integer idReparticao) {
		this.idReparticao = idReparticao;
	}

	public Date getDataUltAlteracao() {
		return this.dataUltAlteracao;
	}

	public void setDataUltAlteracao(Date dataUltAlteracao) {
		this.dataUltAlteracao = dataUltAlteracao;
	}

	public String getDescReparticao() {
		return this.descReparticao;
	}

	public void setDescReparticao(String descReparticao) {
		this.descReparticao = descReparticao;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getEndBairro() {
		return this.endBairro;
	}

	public void setEndBairro(String endBairro) {
		this.endBairro = endBairro;
	}

	public String getEndCep() {
		return this.endCep;
	}

	public void setEndCep(String endCep) {
		this.endCep = endCep;
	}

	public String getEndCidade() {
		return this.endCidade;
	}

	public void setEndCidade(String endCidade) {
		this.endCidade = endCidade;
	}

	public String getEndCompl() {
		return this.endCompl;
	}

	public void setEndCompl(String endCompl) {
		this.endCompl = endCompl;
	}

	public String getEndLogra() {
		return this.endLogra;
	}

	public void setEndLogra(String endLogra) {
		this.endLogra = endLogra;
	}

	public String getEndNumero() {
		return this.endNumero;
	}

	public void setEndNumero(String endNumero) {
		this.endNumero = endNumero;
	}

	public String getEndUf() {
		return this.endUf;
	}

	public void setEndUf(String endUf) {
		this.endUf = endUf;
	}

	public String getNomeContato() {
		return this.nomeContato;
	}

	public void setNomeContato(String nomeContato) {
		this.nomeContato = nomeContato;
	}

	public String getNumDdd() {
		return this.numDdd;
	}

	public void setNumDdd(String numDdd) {
		this.numDdd = numDdd;
	}

	public String getNumFax() {
		return this.numFax;
	}

	public void setNumFax(String numFax) {
		this.numFax = numFax;
	}

	public String getNumTelefone() {
		return this.numTelefone;
	}

	public void setNumTelefone(String numTelefone) {
		this.numTelefone = numTelefone;
	}

	public String getTipoDiskete() {
		return this.tipoDiskete;
	}

	public void setTipoDiskete(String tipoDiskete) {
		this.tipoDiskete = tipoDiskete;
	}

	public String getUnidadePagadora() {
		return this.unidadePagadora;
	}

	public void setUnidadePagadora(String unidadePagadora) {
		this.unidadePagadora = unidadePagadora;
	}

	public String getUsuarioUltAlteracao() {
		return this.usuarioUltAlteracao;
	}

	public void setUsuarioUltAlteracao(String usuarioUltAlteracao) {
		this.usuarioUltAlteracao = usuarioUltAlteracao;
	}

	public Integer getVersao() {
		return this.versao;
	}

	public void setVersao(Integer versao) {
		this.versao = versao;
	}

	/**
	 * @return the consignataria
	 */
	public TconsConsignataria getConsignataria() {
		return consignataria;
	}

	/**
	 * @param consignataria the consignataria to set
	 */
	public void setConsignataria(TconsConsignataria consignataria) {
		this.consignataria = consignataria;
	}

	/**
	 * @return the orgao
	 */
	public TconsOrgao getOrgao() {
		return orgao;
	}

	/**
	 * @param orgao the orgao to set
	 */
	public void setOrgao(TconsOrgao orgao) {
		this.orgao = orgao;
	}

	/**
	 * @return the uf
	 */
	public TconsUf getUf() {
		return uf;
	}

	/**
	 * @param uf the uf to set
	 */
	public void setUf(TconsUf uf) {
		this.uf = uf;
	}

	@Override
	public Integer getId() {
		return this.getIdReparticao();
	}

	@Override
	public void setId(Integer id) {
		this.setIdReparticao(id);
		
	}

	/**
	 * @return the codReparticao
	 */
	public String getCodReparticao() {
		return codReparticao;
	}

	/**
	 * @param codReparticao the codReparticao to set
	 */
	public void setCodReparticao(String codReparticao) {
		this.codReparticao = codReparticao;
	}

}